import { getuserinfo } from '@/api/user'
import { rendermenu } from '@/util/rendermenu'
import Vue from 'vue'
import Vuex from 'vuex'
import router from "../router/index"
Vue.use(Vuex)
//  如何统一打包指定目录中的文件
const req = require.context('../views', true, /\.vue$/);
const requireAll = (a) => {
    return a.keys().map(a)
};

let routerlist = requireAll(req);
var routerobj = {}
routerlist.forEach(v => {
    routerobj[v.default.name] = v.default
});
const store = new Vuex.Store({
    state: {

        menulist: [
            // {
            //     title: '用户管理',
            //     index: '1',
            //     icon: 'el-icon-location',
            //     children: [
            //         {
            //             title: '用户列表',
            //             index: '/user',
            //             icon: 'el-icon-location',
            //             children: [],
            //         },
            //         // {
            //         //   title: '用户列表2',
            //         //   index: 'user2',
            //         //   icon: 'el-icon-location',
            //         //   children: [],
            //         // },
            //     ],
            // },
            // {
            //     title: '订单管理',
            //     index: '2',
            //     icon: 'el-icon-location',
            //     children: [
            //         {
            //             title: '发布订单',
            //             index: '/order/add',
            //             icon: 'el-icon-location',
            //             children: [],
            //         },
            //         {
            //             title: '个人中心',
            //             index: '/myself',
            //             icon: 'el-icon-location',
            //             children: [],
            //         },
            //         {
            //             title: '订单列表',
            //             index: '/order/list',
            //             icon: 'el-icon-location',
            //             children: [],
            //         },
            //         {
            //             title: '接单大厅',
            //             index: '/order',
            //             icon: 'el-icon-location',
            //             children: [],
            //         },
            //     ],
            // },
            // {
            //     title: '系统设置',
            //     index: '3',
            //     icon: 'el-icon-location',
            //     children: [],
            // },
            // {
            //     title: '外观设置',
            //     index: '6',
            //     icon: 'el-icon-location',
            //     children: [],
            // },
        ],
        count: 0,
        isCollapse: false,
        list: [
            { type: 1 },
            { type: 1 },
            { type: 2 },
            { type: 2 },
            { type: 3 },
            { type: 3 },
        ],
        userinfo: {
            // name: "刘华"
            // Vue实例.$store.state.userinfo.name
        }
    },
    getters: {
        getlist(state) {
            return state.list.filter(v => v.type < 3)
        }
    },
    mutations: {
        CHANGE_USERINFO(state, val) {
            state.userinfo = val
        },

        CHANGE_MENU(state, val) {
            state.menulist = val
        },

        //  社区规范 名称统一大写
        CHANGE_NAME(state, val) {
            console.log("触发了mutations", state, val);
            state.userinfo.name = val
        },
        increment(state) {
            state.count++
        },
        //  修改isCollapse 
        CHANGE_Collapse(state, val) {
            state.isCollapse = val
        }
    },
    actions: {
        async getmens(store) {
            let result = await getuserinfo()
            // 发生请求更新菜单 
            console.log("菜单", result);
            //     对菜单进行出路
            let list = rendermenu(result.data)
            console.log(list);
            store.commit("CHANGE_MENU", list)
            result.data.forEach(v => {
                if (v.name) {
                    console.log("打包的数据", v, routerlist);
                    router.addRoute("home", {
                        ...v,
                        component: routerobj[v.name]

                    })
                }
            })
        }
    }
})


export default store